﻿using System;
using System.ComponentModel;
using System.Diagnostics.Contracts;
using Library.Collections.Generic;
using INDEX = System.UInt64;

namespace Library.Collections.Specialized
{
    [ImmutableObject(true)]
    public interface IDictionaryVectorReadOnly : IDictionaryReadOnly, IVectorReadOnly
    {
        [Pure]
        new IVectorReadOnly Keys { get; }
        [Pure]
        new IVectorReadOnly Values { get; }

        [Pure]
        bool Contains(object key, object value, out object index);
    }

    [ImmutableObject(true)]
    public interface IDictionaryVectorReadOnly<TKey, TValue> : IDictionaryReadOnly<TKey, TValue>, IVectorReadOnly<Tuple<TKey, TValue>>
    {
        [Pure]
        new IVectorReadOnly<TKey> Keys { get; }
        [Pure]
        new IVectorReadOnly<TKey> Values { get; }

        [Pure]
        bool Contains(TKey key, TValue value, out INDEX index);
    }
}
